فرض کن یه چراغ راهنمایی داری که تصمیم میگیره اگر چراغ قرمز بود بایست، اگر سبز بود حرکت کن. توی لینوکس، دستور if دقیقاً همینه: به اسکریپت شما اجازه میده شرایط مختلف رو بررسی کنه و بر اساس اون تصمیم بگیره. این جلسه بهت یاد میده چطور با if، else و elif اسکریپتهای هوشمند بنویسی!
if در Bash
دستور if در Bash برای تصمیمگیری بر اساس شرایط استفاده میشود. ساختار کلی آن به این صورت است:
نکات مهم:
if و شرط، حتماً then نوشته میشود.if با fi (if برعکس) بسته میشود.[ و شرط و ] حتماً فاصله بگذارید.; بعد از شرط بگذارید یا then را در خط بعد بنویسید.if بر اساس کد خروجی (Exit Status) شرط تصمیم میگیرد. اگر کد خروجی 0 باشد (شرط درست)، دستورات داخل then اجرا میشوند.
if-else
با else میتوانید کاری را انجام دهید که اگر شرط نادرست بود، اجرا شود.
if-elif-else
با elif (مخفف else if) میتوانید چندین شرط را پشت سر هم بررسی کنید.
این اسکریپت بررسی میکند که آیا کاربر آرگومان (نام فایل) به اسکریپت داده است یا نه. اگر داده باشد، وجود فایل را بررسی میکند.
توضیح:
-z "$1" بررسی میکند که آیا آرگومان اول خالی است یا نه.-f "$1" بررسی میکند که آیا فایل وجود دارد یا نه.-z بررسی میکند که آیا یک رشته خالی است یا نه. این برای بررسی آرگومانها بسیار مفید است.
if
اگر NUMBER=8 باشد:
توضیح: -gt یعنی Greater Than (بزرگتر از). اگر عدد از ۱۰ بزرگتر باشد، شرط درست است.
test
در این مثال از test به جای [ ] استفاده شده است. هر دو معادل هستند.
توضیح: test "$pass" == "mabedini" بررسی میکند که آیا رمز وارد شده با mabedini برابر است یا نه.
test و [ ] هر دو معادل هستند. استفاده از [ ] در Bash رایجتر است.
-s
توضیح: -s باعث میشود که رمز در ترمینال نمایش داده نشود. echo خالی برای رفتن به خط بعد استفاده شده است.
if| نوع | عملگر | معنی |
|---|---|---|
| اعداد | -eq |
برابر (Equal) |
-ne |
نابرابر (Not Equal) | |
-gt |
بزرگتر (Greater Than) | |
-lt |
کوچکتر (Less Than) | |
-ge |
بزرگتر یا مساوی (Greater or Equal) | |
-le |
کوچکتر یا مساوی (Less or Equal) | |
| رشتهها | = |
برابر |
!= |
نابرابر | |
-z |
خالی است | |
-n |
غیرخالی است | |
| فایلها | -e |
وجود دارد |
-f |
فایل معمولی وجود دارد | |
-d |
دایرکتوری وجود دارد | |
-r |
قابل خواندن است | |
-w |
قابل نوشتن است | |
-x |
قابل اجرا است |
if[ و شرط و ] فاصله بگذارید: [ "$var" = "value" ] ✅ درست — ["$var"="value"] ❌ اشتباه[ "$name" = "Ali" ][ $num -gt 10 ]&& (AND) و || (OR) استفاده کنید: [ "$age" -gt 18 ] && [ "$age" -lt 60 ]if باید با fi بسته شود.&& میتوانید چند شرط را با هم ترکیب کنید (همه شرطها باید درست باشند). با || حداقل یکی از شرطها باید درست باشد.
if → برای تصمیمگیری بر اساس شرایط استفاده میشود.then → بعد از شرط، برای اجرای دستورات در صورت درست بودن شرط.else → برای اجرای دستورات در صورت نادرست بودن شرط.elif → برای بررسی چندین شرط پشت سر هم.fi → پایان بلوک if (if برعکس).test و [ ] → برای نوشتن شرطها استفاده میشوند.&& → AND (همه شرطها باید درست باشند).|| → OR (حداقل یکی از شرطها باید درست باشد).یک اسکریپت بنویسید که:
if بررسی کند که عدد مثبت، منفی یا صفر است.elif هر سه حالت را پوشش دهد.